﻿using System.Collections.Generic;

namespace Iptv.ResourceDowner.Model
{
    /// <summary>
    /// 站点下载配置
    /// </summary>
    public class LoadConfig
    {
        /// <summary>
        /// 编号、序号
        /// </summary>
        public int ID { get; set; }
        /// <summary>
        /// SP名称
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 标记
        /// </summary>
        public string Tag { get; set; }
        /// <summary>
        /// 资源存储地址  "D:\\FTP\\Resources\\voole\\"
        /// </summary>
        public string ResSaveAddr { get; set; }
        /// <summary>
        /// 是否对下载文件进行MD5计算
        /// </summary>
        public bool AllowMD5 { get; set; } = false;
        /// <summary>
        /// 任务失败重试次数
        /// </summary>
        public int RedoTimes { get; set; } = 0;  //默认不主动重试
        /// <summary>
        /// 是否检查网络可达性
        /// </summary>
        public bool CheckNetable { get; set; } = false;
        /// <summary>
        /// 是否使用网络盘
        /// </summary>
        public bool AllowNetDisK { get; set; } = false;
        /// <summary>
        /// 网盘配置 "worksheet,WedoIPTV@2017,\\\\172.25.8.12\\worksheet,H:"
        /// </summary>
        public string ResouceNetDiskConfig { get; set; }
        /// <summary>
        /// 后缀格式限制 为空或*时所有文件都可下载，否则下载指定后缀内容
        /// </summary>
        public string[] FileFormats { get; set; } = new string[] { "*" };
        /// <summary>
        /// 文件名混淆 不使用原始名称，对文件名进行混淆，比如使用guid等命名
        /// </summary>
        public bool FileNameblur { get; set; } = false;
        /// <summary>
        /// 断点续传
        /// </summary>
        public bool AllowDownResume { get; set; } = false;

        #region M3U8支持
        /// <summary>
        /// 支持多个下载线程
        /// </summary>
        public bool AllowMutliDownThread { get; set; } = true;
        /// <summary>
        /// 最大下载线程数 仅在M3U8有效
        /// </summary>
        public int MaxThreadCount { get; set; } = 4;
        /// <summary>
        /// 是否下载子数据 M3U8有效
        /// </summary>
        public bool AllowDownSub { get; set; } = false;
        /// <summary>
        /// 是否使用源路径作为存储路径
        /// </summary>
        public bool AllowSourcePath { get; set; } = false;
        /// <summary>
        /// 播放控制参数  参数名称 如tid 参数类型 0 文件名取值 取值序号 1  b0045dzedgi.2.w0045ua2723.321004.ts.m3u8 样例 tid=b0045dzedgi
        /// </summary>
        /// <remarks>流文件必填，需要进行校验</remarks>
        public string[] PlayParams { get; set; }
        /// <summary>
        /// 审核播放路径模板
        /// </summary>
        /// <remarks>\\172.25.8.73\worksheet\FTP\Resources\zensott\bilibili/iptvsdkmdium/40156/510905722/_00003l5usaqa3m8sk2sfi9qfhli63kb-drm_slice/video.m3u8 510905722</remarks>
        /// <example>\\172.25.8.73\worksheet\FTP\Resources\zzxxott\20240511/b0045dzedgi.2.w0045ua2723.321004/b0045dzedgi.2.w0045ua2723.321004.ts.m3u8  b0045dzedgi</example>
        public string PlayUrlTemplate { get; set; } = string.Empty;
        /// <summary>
        /// 审核ID取值方式 B站和腾讯取ID不同 腾讯取文件名中dot前的第一个字串 B站取第二个数字目录
        /// 修改为从工单取值和从文件目录名取值 2024-10-27
        /// </summary>
        public int AuditType { get; set; }
        /// <summary>
        /// 流文件或者压缩包已存在时，是否需要再次下载 默认不下载
        /// </summary>
        public bool ExistsNeedDown { get; set; } = false;
        #endregion M3U8支持
    }

    /// <summary>
    /// 站点配置集合
    /// </summary>
    public class SitesConfig
    {
        /// <summary>
        /// 站点配置对象集合
        /// </summary>
        public List<LoadConfig> ResConfig { get; set; }
    }
}
